技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2025 iThome 鐵人賽
DAY
18
0
自我挑戰組
從零開始學習LeetCode
系列 第
18
篇
Day 18 Rotate Array
17th鐵人賽
pinggg
2025-10-02 22:15:29
40 瀏覽
分享至
題目:給定一個長度為 n 的整數陣列 nums,以及一個整數 k,請將陣列「向右旋轉」k 步
解法一
直觀,但效率差
適合「第一次接觸」的同學練習
註解
nums.pop() → 移除並回傳陣列最後一個元素
nums.insert(0, last) → 插到陣列的最前面
重複 k 次後,陣列就被旋轉
理解
想像你有一列人排隊:
[1,2,3,4,5,6,7]
旋轉一次,就是把最後一個人(7)拉到最前面:
[7,1,2,3,4,5,6]
旋轉三次,就依序拉出 7、6、5 到最前面
這樣就得到結果 [5,6,7,1,2,3,4]
缺點是效率不好,因為每次 insert 都要移動其他元素
解法二
額外陣列
速度快,但需要 O(n) 額外空間
註解
(i + k) % n → 計算新位置,保證不會超出邊界
建立新陣列 newArr 來存放旋轉後的結果
最後再把結果覆蓋回原本 nums
理解
就像你要搬家:
每個人(數字)都有一個新位置(用公式算出來)
搬到新房子(newArr)後,再全部搬回舊房子(nums)
解法三
不需要額外空間,效率高
註解
reverse(start, end) → 自己寫一個函式,交換陣列前後元素
整體操作順序:
(1)[1,2,3,4,5,6,7] → [7,6,5,4,3,2,1]
(2)前 k=3 個反轉 → [5,6,7,4,3,2,1]
(3)後面反轉 → [5,6,7,1,2,3,4]
理解
就像把一張紙上的數字「翻轉」幾次:
(1)先把整張紙上下顛倒
(2)把前 k 個翻回來
(3)把後面翻回來
最後就得到「旋轉」的效果
留言
追蹤
檢舉
上一篇
Day 17 Move Zeroes
下一篇
Day 19 Intersection of Two Arrays II
系列文
從零開始學習LeetCode
共
24
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
20
Day 20 Majority Element
21
Day 21 Missing Number
22
Day 22 Remove Element
23
Day 23 Remove Duplicates from Sorted Array
24
Day 24 Remove Duplicates from Sorted Array II
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
17009
篇
完賽人數
198
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
17th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
如何控制被我走私的Web Shell?
發文一直被判定廣告或垃圾訊息
excel web adi 巨集,出現網頁指令碼錯誤
opencart4.1套件更新
dreambooth報錯:hidden_size
熱門回答
熱門文章
[為你自己學 n8n] 第 18 天,我的 Line 機器人會記帳!(下)
[為你自己學 n8n] 第 17 天,我的 Line 機器人會記帳!(中)
[為你自己學 n8n] 第 19 天,n8n 名片王(上)
第18天,Cloudflare Gateway 裝置網路守門員 / 蚵仔之家 | 30天板橋湳雅夜市
07-03:Google生態系整合應用
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}